home *** CD-ROM | disk | FTP | other *** search
/ PC World Komputer 2010 April / PCWorld0410.iso / hity wydania / Ubuntu 9.10 PL / karmelkowy-koliberek-desktop-9.10-i386-PL.iso / casper / filesystem.squashfs / usr / bin / byobu-janitor < prev    next >
Text File  |  2009-10-11  |  4KB  |  109 lines

  1. #!/bin/sh -e
  2. #
  3. #    byobu-janitor - a collection of byobu tasks that ensure  a clean
  4. #                    environtment and smooth upgrades
  5. #
  6. #    Copyright (C) 2009 Canonical Ltd.
  7. #
  8. #    Authors: Dustin Kirkland <kirkland@canonical.com>
  9. #
  10. #    This program is free software: you can redistribute it and/or modify
  11. #    it under the terms of the GNU General Public License as published by
  12. #    the Free Software Foundation, version 3 of the License.
  13. #
  14. #    This program is distributed in the hope that it will be useful,
  15. #    but WITHOUT ANY WARRANTY; without even the implied warranty of
  16. #    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
  17. #    GNU General Public License for more details.
  18. #
  19. #    You should have received a copy of the GNU General Public License
  20. #    along with this program.  If not, see <http://www.gnu.org/licenses/>.
  21.  
  22. PKG="byobu"
  23. RUN="/var/run/screen/S-$USER"
  24. FLAG="$RUN/$PKG.reload-required"
  25.  
  26. # Exit immediately, if we're not forced, and there is no reload flag
  27. if [ "$1" != "--force" ] && [ ! -e "$FLAG" ]; then
  28.     exit 0
  29. fi
  30.  
  31. # Set the rest of the variables
  32. OLDPKG="screen-profiles"
  33. DEFAULT_PROFILE="light"
  34. PROFILE="$HOME/.$PKG/profile"
  35.  
  36. # Establish ssh-agent socket, helps when reconnecting to a detached session
  37. if [ -S "$SSH_AUTH_SOCK" ] && [ -w "$RUN" ]; then
  38.     rm -f "$RUN/$PKG.ssh-agent"
  39.     ln -sf "$SSH_AUTH_SOCK" "$RUN/$PKG.ssh-agent"
  40. fi
  41.  
  42. # Affects: users who launched using sudo, such that their config dir
  43. # is not writable by them
  44. if [ -d "$HOME/.$PKG" ] && [ ! -w "$HOME/.$PKG" ]; then
  45.     echo "ERROR: [$HOME/.$PKG] is not writable by the current user" 1>&2
  46.     exit 1
  47. fi
  48.  
  49. # Affects: Upgrades from screen-profiles
  50. # If the old config dir exists, but the new one doesn't, provide a migration mechanism.
  51. if [ -d "$HOME/.$OLDPKG" ] && [ ! -e "$HOME/.$PKG" ]; then
  52.     # Rename the config dir
  53.     mv -f "$HOME/.$OLDPKG" "$HOME/.$PKG"
  54.     ln -sf "$HOME/.$PKG" "$HOME/.$OLDPKG"
  55.     # Fix the chosen profile symlink
  56.     if [ -h "$PROFILE" ]; then
  57.         # Determine the chosen profile color
  58.         profile=`readlink "$PROFILE" | sed "s:^.*-::"`
  59.         # Try to set that color, if it exists, otherwise set to default
  60.         byobu-select-profile -s "$profile" >/dev/null 2>&1 || byobu-select-profile -s "$DEFAULT_PROFILE" >/dev/null 2>&1
  61.     fi
  62.     # Replace all instances of the old package name with the new
  63.     sed -i "s/$OLDPKG/$PKG/g" "$HOME/.$PKG"/* || true
  64. fi
  65.  
  66. # Affects: First runs with no configuration
  67. # Seed the configuration
  68. [ -d "$HOME/.$PKG" ] || mkdir -p "$HOME/.$PKG"
  69. [ -r "$PROFILE" ] || byobu-select-profile -s "$DEFAULT_PROFILE" >/dev/null 2>&1
  70. [ -s "$HOME/.$PKG/keybindings" ] || echo "source /usr/share/$PKG/keybindings/common" > "$HOME/.$PKG/keybindings"
  71. [ -r "$HOME/.$PKG/status" ] || touch "$HOME/.$PKG/status"
  72. [ -r "$HOME/.$PKG/windows" ] || touch "$HOME/.$PKG/windows"
  73. [ -r "$HOME/.screenrc" ] || touch "$HOME/.screenrc"
  74.  
  75. # Affects: Upgrades from <= byobu-2.11
  76. # The status scripts used to have hyphens in their name, but now use
  77. # underscores such that we can source the file as a shell snippet;
  78. # fix existing status configuration.
  79. sed -i "s/-/_/g" "$HOME/.$PKG/status"
  80. sed -i "s/^disk.*=/disk=/" "$HOME/.$PKG/status"
  81. sed -i "s/^network.*=/network=/" "$HOME/.$PKG/status"
  82.  
  83. # Affects: Upgrades from <= byobu-2.16
  84. # screen-launcher was renamed byobu-launcher; if the user has byobu
  85. # set to auto-launch, update their configuration to use the byobu-launcher
  86. if grep -qs "screen-launcher$" "$HOME/.profile"; then
  87.     /usr/share/$PKG/byobu-launcher-install
  88. fi
  89.  
  90. # Affects: Upgrades from <= byobu-2.25
  91. # Collapse separate status config files into the sourced config
  92. for i in disk network distro logo; do
  93.     if [ -r "$HOME/.$PKG/$i" ]; then
  94.         val=`cat $HOME/.$PKG/$i`
  95.         uc=`echo "$i" | tr "[:lower:]" "[:upper:]"`
  96.         case $i in
  97.             disk|network)
  98.                 key="MONITORED_"$uc ;;
  99.             distro|logo)
  100.                 key="$uc" ;;
  101.         esac
  102.         echo "$key=\"$val\"" >> "$HOME/.$PKG/statusrc"
  103.         rm "$HOME/.$PKG/$i"
  104.     fi
  105. done
  106.  
  107. # Clean up flag
  108. rm -f "$FLAG"
  109.